import java.math.BigInteger;

/**
 * @author LKQ
 * @date 2021/12/22 20:12
 * @description
 */
public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        solution.reverseBits(0b00000010100101000001111010011100);
    }

    public int reverseBits(int n) {
        int rev = 0;
        for (int i = 0; i < 32 && n != 0; ++i) {
            // |= 等同于“或“，二进制对位只要有1就为1；&= 等同于“与”，二进制对位只要不全为1就是0；^= 等同于异或。
            // n & 1是取二进制最低位 << 左移多少位
            rev |= (n & 1) << (31 - i);
            // >>>=右移赋值，左边空出的位以0填充
            n >>>= 1;
        }
        return rev;
    }
}
